package com.project.mapper;

import com.project.bean.RoomBean;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;

public interface IRoomMapper {
    /**
     * 显示所有房间
     * @return 房间集合  房间信息{编号，地址，状态，可住人数，已住人数，房间类型}
     */
    ArrayList<RoomBean> showAllRooms();


    /** （学生入住时）
     * 按性别 查询 空房间（可住人数>已住人数）
     * @param gender 性别
     * @return 房间集合
     */
    ArrayList<RoomBean> findRoomByGender(String gender);

    /**
     * 按房间名，查询房间
     * @param roomAddress 房间名
     * @return 房间对象
     */
    RoomBean RoomByAddress(String roomAddress);
    /**
     * 添加房间
     * @param roomBean 房间对象 {房间地址，可住人数，房间类型}
     */
    void addRoom(RoomBean roomBean);

    /**
     * 按房间id，查询房间已住人数
     * @param roomId
     * @return
     */
    Integer roomInNumById(Integer roomId);

    /**
     * 删除房间
     * @param roomId 房间id
     */
    void delRoom(Integer roomId);


    /**
     * 根据房间id 查看房间详细信息
     * @param roomId 房间id
     * @return 房间对象  房间信息：房间编号、地址、类型、状态、可容纳人数、已住人数
     *                 学生信息：学生编号、姓名、班级名称、电话
     */
    RoomBean roomById(Integer roomId);

    /**
     * 动态条件分页查询房间,同时统计每个房间已住人数（外联，没住人的房间也要显示）
     * @param roomAddress 房间地址
     * @param roomState 房间状态
     * @param roomType 房间类型

     * 步骤：动态条件分页查找房间信息，同时统计每个房间的已住人数
     * @return 房间分页对象  房间信息{编号，地址，状态，可住人数，已住人数，房间类型}
     */
    ArrayList<RoomBean> cutPageRoomByCondition(@Param("roomAddress") String roomAddress, @Param("roomState") String roomState
            , @Param("roomType")String roomType,@Param("canInOrNo")String canInOrNo);

}
